package com.cleaningcloud.cld.mapper;

import com.cleaningcloud.cld.domain.MaterialsBI;
import com.cleaningcloud.cld.domain.SaleBI;

import java.util.List;
import java.util.Map;

/**
 * @Author Shaw
 * @Description 销售报表BI映射类
 * @date: 2025-03-06 16:34
 * @param: //TODO
 */
public interface SaleBIMapper {

    //  ====================================首页版块====================================
    /**
     * @Author Shaw
     * @Description 商品品类库存销售信息表格
     * @date: 2025-09-09 9:45
     * @param: //TODO
     */
    List<SaleBI> getCommodityStockSaleByCommodityTypeTable();

    /**
     * @Author Shaw
     * @Description 商品公司库存占比
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<SaleBI> getCompanyCommodityTypeSaleRate();

    /**
     * @Author Shaw
     * @Description 按当月查询物资销售利润(日走势图)
     * @date: 2025-09-09 9:45
     * @param: //TODO
     */
    SaleBI getMaterialsInfoSaleDayImg(SaleBI saleBI);

    /**
     * @Author Shaw
     * @Description 按当月查询物资销售额/利润(月累计表格)
     * @date: 2025-09-09 9:45
     * @param: //TODO
     */
    List<SaleBI> getMaterialsInfoSaleTable();

    /**
     * @Author Shaw
     * @Description 商品类型销售数量占比
     * @date: 2025-09-09 9:45
     * @param: //TODO
     */
    List<SaleBI> getSaleCommodityTypeRate();

    /**
     * @Author Shaw
     * @Description 商品类型销售数量/金额表格
     * @date: 2025-09-09 9:45
     * @param: //TODO
     */
    List<SaleBI> getSaleCommodityTypeTable();

    /**
     * @Author Shaw
     * @Description 获取销售客户销售订单占比
     * @date: 2025-09-09 9:45
     * @param: //TODO
     */
    List<SaleBI> getSaleCustomerOrderRate();

    /**
     * @Author Shaw
     * @Description 销售订单不同状态订单数表格
     * @date: 2025-09-09 9:45
     * @param: //TODO
     */
    Map<String,Object> getSaleOrderInfoTable();

    /**
     * @Author Shaw
     * @Description 根据类型ID获取公司库存数量/金额占比
     * @date: 2025-09-09 9:45
     * @param: //TODO
     */
    Map<String,Object> getCompanyStockRateByCommodityTypeId(SaleBI saleBI);

    /**
     * @Author Shaw
     * @Description 根据类型ID获取公司库存数量/金额TOP20
     * @date: 2025-09-09 9:45
     * @param: //TODO
     */
    List<SaleBI> getCompanyStockTableByCommodityTypeId(SaleBI saleBI);

    /**
     * @Author Shaw
     * @Description 根据类型ID获取销售成本/利润
     * @date: 2025-09-09 9:45
     * @param: //TODO
     */
    Map<String,Object> getSaleMoneyByCommodityTypeId(SaleBI saleBI);


    /**
     * @Author Shaw
     * @Description 根据类型ID获取销售数量/金额TOP20
     * @date: 2025-09-09 9:45
     * @param: //TODO
     */
    List<SaleBI> getLevelSaleTableByCommodityTypeId(SaleBI saleBI);
}
